package ee.maoinvest.backend.model.dao.factory;

import java.sql.Connection;

import ee.maoinvest.backend.model.dao.ElectricityContractDAO;
import ee.maoinvest.backend.model.dao.ElectricityMeterAndItsElectricityContractPeriodDAO;
import ee.maoinvest.backend.model.dao.ElectricityMeterDAO;
import ee.maoinvest.backend.model.dao.ElectricityMeterReadingDAO;
import ee.maoinvest.backend.model.dao.ElectricityMeterTypeDAO;
import ee.maoinvest.backend.model.dao.EnterpriseDAO;
import ee.maoinvest.backend.model.dao.LatestDatesDAO;
import ee.maoinvest.backend.model.dao.RegularReadingOfChildElectricityMeterDAO;
import ee.maoinvest.backend.model.dao.RegularReadingOfParentElectricityMeterDAO;
import ee.maoinvest.backend.model.dao.SubstationDAO;
import ee.maoinvest.backend.model.dao.TempRelationBetweenChildAndParentElectricityMeterDAO;
import ee.maoinvest.backend.model.dao.TempRelationBetweenElectricityMeterAndCoefficentDAO;
import ee.maoinvest.backend.model.dao.TempRelationBetweenSubstationAndMainElectricityMeterDAO;
import ee.maoinvest.backend.model.dao.TransformerCoefficentStandardDAO;
import ee.maoinvest.backend.model.dao.UserDAO;
import ee.maoinvest.backend.model.dao.postgresqlimplementations.ElectricityContractDAOPostgresqlImpl;
import ee.maoinvest.backend.model.dao.postgresqlimplementations.ElectricityMeterAndItsElectricityContractPeriodDAOPostgresqlImpl;
import ee.maoinvest.backend.model.dao.postgresqlimplementations.ElectricityMeterDAOPostgresqlImpl;
import ee.maoinvest.backend.model.dao.postgresqlimplementations.ElectricityMeterReadingDAOPostgresqlImpl;
import ee.maoinvest.backend.model.dao.postgresqlimplementations.ElectricityMeterTypeDAOPostgresqlImpl;
import ee.maoinvest.backend.model.dao.postgresqlimplementations.EnterpriseDAOPostgresqlImpl;
import ee.maoinvest.backend.model.dao.postgresqlimplementations.LatestDatesDAOPostgresqlImpl;
import ee.maoinvest.backend.model.dao.postgresqlimplementations.RegularReadingOfChildElectricityMeterDAOPostgresqlImpl;
import ee.maoinvest.backend.model.dao.postgresqlimplementations.RegularReadingOfParentElectricityMeterDAOPostgresqlImpl;
import ee.maoinvest.backend.model.dao.postgresqlimplementations.SubstationDAOPostgresqlImpl;
import ee.maoinvest.backend.model.dao.postgresqlimplementations.TempRelationBetweenChildAndParentElectricityMeterDAOPostgresqlImpl;
import ee.maoinvest.backend.model.dao.postgresqlimplementations.TempRelationBetweenElectricityMeterAndCoefficentDAOPostgresqlImpl;
import ee.maoinvest.backend.model.dao.postgresqlimplementations.TempRelationBetweenSubstationAndMainElectricityMeterDAOPostgresqlImpl;
import ee.maoinvest.backend.model.dao.postgresqlimplementations.TransformerCoefficentStandardDAOPostgresqlImpl;
import ee.maoinvest.backend.model.dao.postgresqlimplementations.UserDAOPostgresqlImpl;

public class PostgreSQLDAOFactory extends DAOFactory
{

	@Override
	public ElectricityContractDAO getElectricityContractDAOImpl(
			Connection dbConnection)
	{
		return new ElectricityContractDAOPostgresqlImpl(dbConnection);
	}

	@Override
	public ElectricityMeterAndItsElectricityContractPeriodDAO getElectricityMeterAndItsElectricityContractPeriodDAOImpl(
			Connection dbConnection) 
	{
		return new ElectricityMeterAndItsElectricityContractPeriodDAOPostgresqlImpl(dbConnection);
	}

	@Override
	public ElectricityMeterDAO getElectricityMeterDAOImpl(Connection dbConnection) 
	{
		return new ElectricityMeterDAOPostgresqlImpl(dbConnection);
	}
	
	@Override
	public ElectricityMeterReadingDAO getElectricityMeterReadingDAOImpl(
			Connection dbConnection) 
	{
		return new ElectricityMeterReadingDAOPostgresqlImpl(dbConnection);
	}

	@Override
	public ElectricityMeterTypeDAO getElectricityMeterTypeDAOImpl(
			Connection dbConnection)
	{
		return new ElectricityMeterTypeDAOPostgresqlImpl(dbConnection);
	}

	@Override
	public EnterpriseDAO getEnterpriseDAOImpl(Connection dbConnection) 
	{
		return new EnterpriseDAOPostgresqlImpl(dbConnection);
	}

	@Override
	public RegularReadingOfChildElectricityMeterDAO getRegularReadingOfChildElectricityMeterDAOImpl(
			Connection dbConnection) 
	{
		return new RegularReadingOfChildElectricityMeterDAOPostgresqlImpl(dbConnection);
	}

	@Override
	public RegularReadingOfParentElectricityMeterDAO getRegularReadingOfParentElectricityMeterDAOImpl(
			Connection dbConnection) 
	{
		return new RegularReadingOfParentElectricityMeterDAOPostgresqlImpl(dbConnection);
	}

	@Override
	public SubstationDAO getSubstationDAOImpl(Connection dbConnection) 
	{
		return new SubstationDAOPostgresqlImpl(dbConnection);
	}

	@Override
	public TempRelationBetweenChildAndParentElectricityMeterDAO getTempRelationBetweenChildAndParentElectricityMeterDAOImpl(
			Connection dbConnection) 
	{
		return new TempRelationBetweenChildAndParentElectricityMeterDAOPostgresqlImpl(dbConnection);
	}

	@Override
	public TempRelationBetweenElectricityMeterAndCoefficentDAO getTempRelationBetweenElectricityMeterAndCoefficentDAOImpl(
			Connection dbConnection)
	{
		return new TempRelationBetweenElectricityMeterAndCoefficentDAOPostgresqlImpl(dbConnection);
	}

	@Override
	public TempRelationBetweenSubstationAndMainElectricityMeterDAO getTempRelationBetweenSubstationAndMainElectricityMeterDAOImpl(
			Connection dbConnection) 
	{
		return new TempRelationBetweenSubstationAndMainElectricityMeterDAOPostgresqlImpl(dbConnection);
	}

	@Override
	public TransformerCoefficentStandardDAO getTransformerCoefficentStandardDAOImpl(
			Connection dbConnection) 
	{
		return new TransformerCoefficentStandardDAOPostgresqlImpl(dbConnection);
	}

	@Override
	public UserDAO getUserDAOImpl(Connection dbConnection) 
	{
		return new UserDAOPostgresqlImpl(dbConnection);
	}

	@Override
	public LatestDatesDAO getLatestDatesDAOImpl(Connection dbConnection) 
	{
		return new LatestDatesDAOPostgresqlImpl(dbConnection);
	}
	
}
